#include <iostream>
// 饿汉模式 - 静态成员变量
// 优点：线程安全，不需要加锁
// 缺点：程序启动时就创建对象，可能会浪费资源
class Sigleton
{
private:
    // 私有化构造函数，防止外部创建对象
    Sigleton() = default;
    // 禁用拷贝构造函数
    Sigleton(const Sigleton &) = delete;
    // 禁用赋值运算符
    Sigleton &operator=(const Sigleton &) = delete;

    // 静态成员变量，存储单例对象
    static Sigleton instance;

public:
    // 静态成员函数，获取单例对象的引用
    static Sigleton &getInstance()
    {
        return instance;
    }
};

// 在类外初始化静态成员变量，程序启动时就创建单例对象
Sigleton Sigleton::instance;

int main()
{
    Sigleton &s1 = Sigleton::getInstance();
    Sigleton &s2 = Sigleton::getInstance();
    std::cout << &s1 << std::endl;
    std::cout << &s2 << std::endl;
    return 0;
}